import tkinter as tk
import random

# 初始化全局变量
# 创建一个全局变量，用于存储目标数字
target_number = None
current_range = [1, 100]
root = tk.Tk()
root.title("数字查找程序")
# 创建开始按钮
start_button = tk.Button(root, text="开始", command=lambda: start_search())
start_button.pack(side=tk.LEFT, padx=10, pady=10)
# 创建重新按钮
reset_button = tk.Button(root, text="重新", command=lambda: reset_search())
reset_button.pack(side=tk.LEFT, padx=10, pady=10)
# 创建输入标签
input_label = tk.Label(root, text="输入你猜测的数字:")
input_label.pack(side=tk.LEFT, padx=10, pady=10)
# 创建输入框
input_entry = tk.Entry(root)
input_entry.pack(side=tk.LEFT, padx=10, pady=10)
# 创建结果显示标签
result_label = tk.Label(root, text="")
result_label.pack(pady=10)
# 创建区间显示标签
range_label = tk.Label(root, text="当前区间: [1, 100]")
range_label.pack(pady=10)

def start_search():
    global target_number, current_range
    # 若目标数字未生成，先随机生成一个 1 到 100 之间的数字
    if target_number is None:
        target_number = random.randint(1, 100)
    try:
        guess = int(input_entry.get())
        if current_range[0] <= guess <= current_range[1]:
            if guess == target_number:
                result_text = f"恭喜你，猜对了！目标数字就是 {target_number}。"
                target_number = None  # 猜对后重置目标数字，以便下一轮
                current_range = [1, 100]  # 重置区间
            elif guess < target_number:
                result_text = f"猜的数字太小了，再试试。"
                current_range[0] = guess + 1
            else:
                result_text = f"猜的数字太大了，再试试。"
                current_range[1] = guess - 1
            result_label.config(text=result_text)
            update_range_label()
        else:
            result_label.config(text=f"输入的数字不在当前区间 {current_range[0]}-{current_range[1]} 内，"
                                     f"请重新输入。")
    except ValueError:
        result_label.config(text="输入无效，请输入一个有效的整数。")

def update_range_label():
    global current_range
    range_text = f"当前区间: [{current_range[0]}, {current_range[1]}]"
    range_label.config(text=range_text)

def reset_search():
    global target_number, current_range
    input_entry.delete(0, tk.END)
    result_label.config(text="")
    target_number = None  # 重置目标数字
    current_range = [1, 100]  # 重置区间
    update_range_label()

root.mainloop()